/*******************************************************************************
 * Project: iir
 * Package: com.hngtrust.iir.elk.service
 * Type:    ElkService
 * Author:  Zhangkangkang
 * Date:    2021-04-14 10:00:00
 *
 * Copyright (c) 2021 HUANENG GUICHENG TRUST CORP.,LTD All Rights Reserved.
 *******************************************************************************/
package com.hngtrust.iir.elk.service;

import com.hngtrust.iir.elk.dto.*;
import com.hngtrust.iir.material.controller.dto.SearchPrivateMaterialVO;
import com.hngtrust.iir.report.controller.dto.SearchPrivateReportVO;
import com.hngtrust.iir.report.entity.PrivateReport;

import java.util.List;
import java.util.Set;

/**
 * (ElkService)服务接口
 *
 * @author Zhangkangkang
 * @since 2021-04-14 10:00:00
 */
public interface ElkService {

    /**
     * 检索公告
     * @param noticeReq
     */
    List<NoticeResp> searchNotice(NoticeReq noticeReq);

    /**
     * 检索研报
     *
     * @param reportReq
     */
    List<ReportResp> searchReport(ReportReq reportReq);

    /**
     * 检索新闻资讯
     *
     * @param newsInfoReq
     */
    List<NewsInfoResp> searchNewsInfo(NewsInfoReq newsInfoReq);
    
    /**
     * 检索公司信息
     * @param req
     * @return
     */
    List<CompResp> searchCompInfo(CompSearchReq req);
    
    /**
     * elk给新闻资讯打标签处理
     * @param id   索引ID
     * @param tags   标签集合
     */
    void updateNoticeTags(String id,Set<String> tags);

    /**
     * elk给新闻资讯打标签处理
     * @param id   索引ID
     * @param tags   标签集合
     */
    void updateNewsInfoTags(String id,Set<String> tags);
    
    /**
     * elk给新闻资讯打标签处理
     * @param id   索引ID
     * @param tags   标签集合
     */
    void updateReportTags(String id, Set<String> tags);
    
    void deleteElkData(DeleteElkDataReqVO vo);
    
    List<SearchPrivateReportVO> searchPrivateReport(ReportReq reportReq);
    
    void updatePrivateReport(List<Long> users,PrivateReport report);

    List<SearchPrivateMaterialVO> searchPrivateMaterial(MaterialReq materialReq);

    /**
     * 行业资讯检索
     * @param newsInfoReq
     * @return
     */
    List<IndustryNewsInfoResp> searchIndustryNewsInfo(IndustryNewsInfoReq newsInfoReq);

    /**
     * 行业研报检索
     * @param reportReq
     * @return
     */
    List<IndustryReportResp> searchIndustryReportInfo(IndustryReportReq reportReq);

    /**
     * 专家观点检索
     * @param pointsInfoReq
     * @return
     */
    List<IndustryPointsInfoResp> searchIndustryPointsInfo(IndustryPointsInfoReq pointsInfoReq);

    /**
     * elk给专家观点打标签
     * @param id
     * @param tags
     */
    void updatePointTags(String id, Set<String> tags);
}
